/*
               File: PrcPagarMensalidade
        Description: Prc Pagar Mensalidade
             Author: GeneXus C# Generator version 10_2_5-78484
       Generated on: 6/6/2014 9:52:44.19
       Program type: Callable routine
          Main DBMS: sqlserver
*/
using System;
using System.Collections;
using GeneXus.Utils;
using GeneXus.Resources;
using GeneXus.Application;
using GeneXus.Metadata;
using System.Data;
using System.Data.SqlClient;
using GeneXus.Data;
using com.genexus;
using GeneXus.Data.ADO;
using GeneXus.Data.NTier;
using GeneXus.Data.NTier.ADO;
using System.Runtime.Remoting;
using GeneXus.WebControls;
using GeneXus.Http;
using GeneXus.Procedure;
using GeneXus.XML;
using GeneXus.Search;
using GeneXus.Encryption;
using GeneXus.Http.Client;
using System.Threading;
using System.Xml.Serialization;
using System.Data.SqlTypes;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace GeneXus.Programs {
   public class prcpagarmensalidade : GXProcedure
   {
      public prcpagarmensalidade( )
      {
         context = new GxContext(  );
         DataStoreUtil.LoadDataStores( context);
         dsDefault = context.GetDataStore("Default");
         IsMain = true;
         context.SetDefaultTheme("GeneXusXEv2");
      }

      public prcpagarmensalidade( IGxContext context )
      {
         this.context = context;
         IsMain = false;
         dsDefault = context.GetDataStore("Default");
      }

      public void release( )
      {
      }

      public void execute( ref long aP0_UserId ,
                           ref DateTime aP1_MensalidadeData )
      {
         this.AV10UserId = aP0_UserId;
         this.AV8MensalidadeData = aP1_MensalidadeData;
         initialize();
         executePrivate();
         aP0_UserId=this.AV10UserId;
         aP1_MensalidadeData=this.AV8MensalidadeData;
      }

      public DateTime executeUdp( ref long aP0_UserId )
      {
         this.AV10UserId = aP0_UserId;
         this.AV8MensalidadeData = aP1_MensalidadeData;
         initialize();
         executePrivate();
         aP0_UserId=this.AV10UserId;
         aP1_MensalidadeData=this.AV8MensalidadeData;
         return AV8MensalidadeData ;
      }

      public void executeSubmit( ref long aP0_UserId ,
                                 ref DateTime aP1_MensalidadeData )
      {
         prcpagarmensalidade objprcpagarmensalidade;
         objprcpagarmensalidade = new prcpagarmensalidade();
         objprcpagarmensalidade.AV10UserId = aP0_UserId;
         objprcpagarmensalidade.AV8MensalidadeData = aP1_MensalidadeData;
         objprcpagarmensalidade.context.SetSubmitInitialConfig(context);
         objprcpagarmensalidade.initialize();
         ThreadPool.QueueUserWorkItem( new WaitCallback( executePrivateCatch ),objprcpagarmensalidade);
         aP0_UserId=this.AV10UserId;
         aP1_MensalidadeData=this.AV8MensalidadeData;
      }

      void executePrivateCatch( object stateInfo )
      {
         try
         {
            ((prcpagarmensalidade)stateInfo).executePrivate();
         }
         catch ( Exception e )
         {
            GXUtil.SaveToEventLog( "Design", e);
            throw e ;
         }
      }

      void executePrivate( )
      {
         /* GeneXus formulas */
         /* Output device settings */
         /*
            INSERT RECORD ON TABLE TBLMensalidade

         */
         A43UserId = AV10UserId;
         A34MensalidadeDataPagamento = DateTimeUtil.ResetTime(DateTimeUtil.ServerNow( context, "DEFAULT"));
         A33MensalidadeData = AV8MensalidadeData;
         /* Using cursor P000H2 */
         pr_default.execute(0, new Object[] {A43UserId, A33MensalidadeData, A34MensalidadeDataPagamento});
         pr_default.close(0);
         /* Retrieving last key number assigned */
         /* Using cursor P000H3 */
         pr_default.execute(1);
         A32MensalidadeId = P000H3_A32MensalidadeId[0];
         n32MensalidadeId = P000H3_n32MensalidadeId[0];
         pr_default.close(1);
         dsDefault.SmartCacheProvider.SetUpdated("TBLMensalidade") ;
         if ( (pr_default.getStatus(0) == 1) )
         {
            context.Gx_err = 1;
            Gx_emsg = (String)(context.GetMessage( "GXM_noupdate", ""));
         }
         else
         {
            context.Gx_err = 0;
            Gx_emsg = "";
         }
         /* End Insert */
         this.cleanup();
      }

      public void cleanup( )
      {
         context.CommitDataStores("PrcPagarMensalidade");
         CloseOpenCursors();
         if ( IsMain )
         {
            context.CloseConnections() ;
         }
         exitApplication();
      }

      protected void CloseOpenCursors( )
      {
      }

      public override void initialize( )
      {
         A34MensalidadeDataPagamento = DateTime.MinValue;
         A33MensalidadeData = DateTime.MinValue;
         scmdbuf = "";
         P000H3_A32MensalidadeId = new int[1] ;
         P000H3_n32MensalidadeId = new bool[] {false} ;
         Gx_emsg = "";
         pr_default = new DataStoreProvider(context, new GeneXus.Programs.prcpagarmensalidade__default(),
            new Object[][] {
                new Object[] {
               }
               , new Object[] {
               P000H3_A32MensalidadeId
               }
            }
         );
         /* GeneXus formulas. */
         context.Gx_err = 0;
      }

      private int GX_INS3 ;
      private int A32MensalidadeId ;
      private long AV10UserId ;
      private long A43UserId ;
      private String scmdbuf ;
      private String Gx_emsg ;
      private DateTime AV8MensalidadeData ;
      private DateTime A34MensalidadeDataPagamento ;
      private DateTime A33MensalidadeData ;
      private bool n32MensalidadeId ;
      private IGxDataStore dsDefault ;
      private long aP0_UserId ;
      private DateTime aP1_MensalidadeData ;
      private IDataStoreProvider pr_default ;
      private int[] P000H3_A32MensalidadeId ;
      private bool[] P000H3_n32MensalidadeId ;
   }

   public class prcpagarmensalidade__default : DataStoreHelperBase, IDataStoreHelper
   {
      public ICursor[] getCursors( )
      {
         cursorDefinitions();
         return new Cursor[] {
          new UpdateCursor(def[0])
         ,new ForEachCursor(def[1])
       };
    }

    private static CursorDef[] def;
    private void cursorDefinitions( )
    {
       if ( def == null )
       {
          Object[] prmP000H2 ;
          prmP000H2 = new Object[] {
          new Object[] {"@UserId",SqlDbType.Decimal,15,0} ,
          new Object[] {"@MensalidadeData",SqlDbType.DateTime,8,0} ,
          new Object[] {"@MensalidadeDataPagamento",SqlDbType.DateTime,8,0}
          } ;
          Object[] prmP000H3 ;
          prmP000H3 = new Object[] {
          } ;
          def= new CursorDef[] {
              new CursorDef("P000H2", "INSERT INTO [TBLMensalidade] ([UserId], [MensalidadeData], [MensalidadeDataPagamento]) VALUES (@UserId, @MensalidadeData, @MensalidadeDataPagamento)", GxErrorMask.GX_NOMASK,prmP000H2)
             ,new CursorDef("P000H3", "SELECT Ident_Current('[TBLMensalidade]') ",false, GxErrorMask.GX_NOMASK | GxErrorMask.GX_MASKLOOPLOCK, false, this,prmP000H3,1,0,true,false )
          };
       }
    }

    public void getResults( int cursor ,
                            IFieldGetter rslt ,
                            Object[] buf )
    {
       switch ( cursor )
       {
             case 1 :
                ((int[]) buf[0])[0] = rslt.getInt(1) ;
                break;
       }
    }

    public void setParameters( int cursor ,
                               IFieldSetter stmt ,
                               Object[] parms )
    {
       switch ( cursor )
       {
             case 0 :
                stmt.SetParameter(1, (long)parms[0]);
                stmt.SetParameter(2, (DateTime)parms[1]);
                stmt.SetParameter(3, (DateTime)parms[2]);
                break;
       }
    }

 }

}
